A robot can be qualified as humanoid from the moment when it has certain human appearance attributes: a head, a trunk, two arms, two hands, two legs, two feet, etc. A humanoid robot may, however, be more or less sophisticated. Its limbs may have a greater or lesser number of articulations. It may control its own balance statically and dynamically and walk on two limbs, possibly in three dimensions. It may pick up signals from the environment (“hear”, “see”, “touch”, “sense”, etc.) and react according to more or less sophisticated behaviors, and interact with other robots or humans, either by speech or by gesture. To best exploit these capabilities, there remains a need to provide the computer control unit of the robot with the commands for said behaviors. Some robots can independently fetch the commands needed to execute behaviors corresponding to their usage profile. However, there remains a need for a user to be able to intervene to create new behaviors and motions.
A first way of programming the necessary commands is to have them run according to a predetermined time sequence. This programming logic offers the advantage that the behavior of the robot is predictable in time: the series of behaviors has a start point and an end point which occur at predictable times. See, for example, the method for editing and time programming the behaviors of a robot disclosed by U.S. Pat. No. 6,718,231. However, this logic encounters its limit in the fact that the interactions of the robot with its environment are both inevitable (encountering obstacles on the path) and desirable (reactions of the robot to the demands of the environment or of its user), these events interrupting the progress of the sequence of preprogrammed behaviors.
This is why another programming logic, of event type, based on state machine theory, has been used for humanoid robots as well as for the industrial robots: in this programming logic, links connect behaviors, the second event in a chain being dependent on the outputs of the first event. This logic makes it possible to control the interactions with the environment. See, for example, the method for editing and event programming a robot disclosed by U.S. Pat. No. 6,470,235. This logic does, however, present the drawback of interrupting a preprogrammed sequence of behaviors until the expected event has occurred. A simplified example will make it easy to understand this difficulty: a user wants the robot to go from a first position to a second position that it must reach at a determined instant. In its path, it may have to perform actions which depend on interactions with the environment (say “hello” to another robot that it encounters, collect an object, etc.). A purely event programming, not constrained by time, cannot resolve this problem.
A method which juxtaposes the two event and time programming logics is disclosed by Japanese Patent Application Pub. No. JP 2002/120174. In said method, however, the programmer must intervene in one of the two program blocks to make them compatible. This method does not therefore resolve the problem consisting in making the two event and time programming logics compatible without the intervention of the programmer.